#include <iostream>
#include <memory>
#include <string>

std::unique_ptr<std::string> demo (const char * s)
{
    std::unique_ptr<std::string> temp(new std::string(s));
    return temp;
}


int main()
{

    //标准库函数 std::move()能够让一个unique_ptr赋值给另一个

    //将一个unique_ptr赋值给另一个unique_ptr会导致 留下一个悬挂的unique_ptr，可能导致危害

    using namespace std;
    unique_ptr<string> p1,p2;
    p1 = demo("java");
    p2 = move(p1);

    p1 = demo("python");
    cout << *p1 << " " << *p2 << endl;

    return 0;
}

// 0907 c++ primer p692